package plp.funcoo.expression.structure;

import plp.funcoo.environment.compilation.CompilationEnvironment;
import plp.funcoo.environment.compilation.Environment;
import plp.funcoo.environment.execution.ExecutionEnvironment;
import plp.funcoo.exceptions.ClassAlreadyDeclared;
import plp.funcoo.exceptions.ClassNotDeclared;
import plp.funcoo.exceptions.MethodAlreadDeclared;
import plp.funcoo.exceptions.MethodNotDeclared;
import plp.funcoo.exceptions.VarAlreadyDeclared;
import plp.funcoo.exceptions.VarNotDeclared;
import plp.funcoo.expressions.Expression;
import plp.funcoo.util.Type;

public class LogicalExpression implements Expression{

private Expression conditionalExpression, expressionIf, expressionElse;
	
	
	public LogicalExpression(Expression conditionalExpression, Expression expressionIf,Expression expressionElse)
	{
		this.conditionalExpression = conditionalExpression;
		this.expressionIf = expressionIf;
		this.expressionElse = expressionElse;
	}


	@Override
	public ExecutionEnvironment evaluate(ExecutionEnvironment envi) throws VarNotDeclared, MethodNotDeclared, VarAlreadyDeclared, MethodAlreadDeclared {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public boolean typeCheck(CompilationEnvironment envi)
			throws VarAlreadyDeclared, VarNotDeclared, ClassAlreadyDeclared,
			ClassNotDeclared {
		// TODO Auto-generated method stub
		return false;
	}


	@Override
	public Type getType(Environment envi) throws VarNotDeclared,
			ClassNotDeclared {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public Expression makeCopy() {
		// TODO Auto-generated method stub
		return null;
	}
}
